package cn.kgc.springmvcday02.controller;


import cn.kgc.springmvcday02.entity.User;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author 课工场
 * @date 2023/10/14
 * @description
 * 使用传统的servlet方式实现web项目开发存在不足
 *   1. 针对同一个业务,控制层需要编写多个servlet类来处理对应的请求 addUserServlet updateUserServlet ..
 *       解决方式 ：
 *         1. 在处理类中通过判定 参数method实现请求的分发  localhost:8080/user?method=add
 *         2. 通过反射创建BaseServlet  实现请求分发 解决第一种方式代码冗余问题
 *   2. 接收请求参数
 *         1. 参数的获取需要不断的调用req.getParameter(key)
 *         2.获取参数的类型是String类型    单一
 *         3.在数据封装时 需要做数据类型转换   提升了异常的概率
 *   3. 作出响应
 *        1. 响应时 视图和路径存在耦合
 *        2.视图和视图格式耦合
 *
 *  通过springmvc框架来解决以上分析的问题 ，另外还提供了其它一些功能   异常处理    文件上传

 */
//@WebServlet("/user")
public class UserServlet extends HttpServlet {


    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String age = req.getParameter("age");

        // 为了便于参数的传递  需要将以上参数进行数据封装
        User user = new User();
        user.setAge(Integer.parseInt(age));
        user.setUsername(username);
        user.setPassword(password);

        // TODO: 2023/10/14 将封装好的user对象传递给service进行具体业务处理  -> result  user


        // 将业务层处理的结果响应给前端  1.转发  2.重定向   3.json    ajax
        req.setAttribute("user",user);

        req.getRequestDispatcher("/main.jsp").forward(req,resp);
    }




}
